#include <iostream>
#include <time.h>
// #include "ThreadPool.hpp"
#include "ThreadPool_Singleton.hpp"
#include "Task.hpp"

extern std::string opers;

// int main()
// {
//     ThreadPool<Task>* tp = new ThreadPool<Task>(5);
    
//     tp->Start();
    
//     srand(time(nullptr)^ getpid());
//     while(true)
//     {
//         //1．构建任务
//         int x = rand() % 10 + 1;
//         usleep(10);
//         int y =rand() % 5;
//         char op = opers[rand()%opers.size()];

//         Task t(x, y, op);
//         tp->Push(t);
    
//         // 2.交给线程池处理
//         lg(Info, "main thread make task: %s", t.GetTask().c_str());
//         sleep(1);
//     }

//     return 0;
// }

int main()
{
    // ThreadPool<Task>* tp = new ThreadPool<Task>(5);
    ThreadPool<Task>::GetInstance()->Start();
    
    srand(time(nullptr)^ getpid());
    while(true)
    {
        //1．构建任务
        int x = rand() % 10 + 1;
        usleep(10);
        int y =rand() % 5;
        char op = opers[rand()%opers.size()];

        Task t(x, y, op);
        // tp->Push(t);
        ThreadPool<Task>::GetInstance()->Push(t);
    
        // 2.交给线程池处理
        lg(Info, "main thread make task: %s", t.GetTask().c_str());
        sleep(1);
    }

    return 0;
}